/* Araujo Heiker CI. 19726991
 * Goyo Willandher CI.20666542
 * Rodriguez Rafael CI.20009872
 * Williams Roman CI.20016812 
 * Morett Gilberth CI.20929667*/

package modelo;

import java.util.ArrayList;

public class Drogueria {
	
	private ArrayList<Cliente>clientes;
	private ArrayList<Deposito>depositos;
	private ArrayList<Pedido>pedidos;
	private ArrayList<Linea>lineas;
	private ArrayList<Proveedor>proveedores;
	private ArrayList<FacturaCompra>facturasCompra;
	private ArrayList<Producto>productos;
	private ArrayList<Despacho>despachos;
	
	

	public Drogueria() {
		super();
		// TODO Auto-generated constructor stub
		//Esta es una prueba!!!
		this.clientes = new ArrayList<Cliente>();
		this.depositos = new ArrayList<Deposito>();
		this.pedidos = new ArrayList<Pedido>();
		this.productos = new ArrayList<Producto>();
		this.proveedores = new ArrayList<Proveedor>();
		this.facturasCompra = new ArrayList<FacturaCompra>();
		this.lineas = new ArrayList<Linea>();
		this.despachos = new ArrayList<Despacho>();
		
	}
	
	// Metodos para obtener los respectivos Arreglos

	public ArrayList<Cliente> getClientes() {
		return clientes;
	}
	
	public ArrayList<Linea> getLineas() {
		return lineas;
	}
	
	public ArrayList<Producto> getProductos() {
		return productos;
	}
	
	
	
	public void setClientes(ArrayList<Cliente> clientes) {
		this.clientes = clientes;
	}


	public ArrayList<Deposito> getDepositos() {
		return depositos;
	}
	
	public ArrayList<Pedido> getPedidos() {
		return pedidos;
	}

	public ArrayList<Proveedor> getProveedores() {
		return proveedores;
	}

	public ArrayList<FacturaCompra> getFacturasCompra() {
		return facturasCompra;
	}
	
	public ArrayList<Despacho> getDespacho() {
		return despachos;
	}
	
	// Metodos para inicializar los arreglos

	public void setProveedores(ArrayList<Proveedor> proveedores) {
		this.proveedores = proveedores;
	}

	public void setFacturasCompra(ArrayList<FacturaCompra> facturasCompra) {
		this.facturasCompra = facturasCompra;
	}
	
	public void setDespachos(ArrayList<Despacho>despachos){
		this.despachos = despachos;
	}
	
	public void setProductos(ArrayList<Producto> productos) {
		this.productos = productos;
	}
	
	public void setDepositos(ArrayList<Deposito> depositos) {
		this.depositos = depositos;
	}

	public void setPedidos(ArrayList<Pedido> pedidos) {
		this.pedidos = pedidos;
	}
	
	public void setLineas(ArrayList<Linea> lineas) {
		this.lineas = lineas;
	}
	// Metodos para obtener la cantidad de elementos de los arreglos
	
	public int cantidadDespachos() {
		return despachos.size();
	}
	
	public int cantidadClientes() {
		
		return clientes.size();
	}
	
	public int cantidadDepositos() {
		
		return depositos.size();
	}
	
	public int cantidadPedidos() {
		
		return pedidos.size();
	}
	
	public int cantidadLineas() {
		
		return lineas.size();
	}
	
	public int cantidadProveedores() {
		
		return proveedores.size();
	}
	
	public int cantidadFacturaCompra() {
		
		return facturasCompra.size();
	}
	
	public int cantidadProductos() {
		return productos.size();
	}
	
	public int CantidadProveedor() {
		
		return this.proveedores.size();
	}
	
	// Metodos para añadir elementos a los arreglos
	
	public void incluirDespacho (Despacho despacho) {
		
		this.despachos.add(despacho);
	}
	
	public void incluirCliente(Cliente cliente) {
	
		this.clientes.add(cliente);
	}
	
	public void incluirDeposito(Deposito depositos) {
		
		this.depositos.add(depositos);
	}
	
	public void incluirPedido(Pedido pedidos) {
		
		this.pedidos.add(pedidos);
	}
	
	public void incluirLineas(Linea lineas) {
	
		this.lineas.add(lineas);
	}
	
	public void incluirProducto(Producto productos){
		this.productos.add(productos);
	}
	
	public void incluirProveedor(Proveedor proveedores) {
		
		this.proveedores.add(proveedores);
	}
	
	public void incluirFacturaCompra(FacturaCompra facturasCompra) {
	
		this.facturasCompra.add(facturasCompra);
	}
	
	//Metodos para obtener un objeto particular de los arreglos
	
	public Cliente getUnCliente(int posi){
		return clientes.get(posi);
	}
	
	public Deposito getUnDeposito(int posi)	{
		return depositos.get(posi);
	}
	
	
	public Pedido getUnPedido(int posi)	{
		return pedidos.get(posi);
	}
	
	public Linea getUnaLinea(int posi){
		return lineas.get(posi);
	}
	
	public Proveedor getUnProveedor(int posi){
		return proveedores.get(posi);
	}
	public Producto getUnProducto(int posi){
		return productos.get(posi);
	}
	
	public FacturaCompra getUnaFacturaCompra(int posi){
		return facturasCompra.get(posi);
	}
	
	public Despacho getUnDespacho(int posi) {
		return despachos.get(posi);
	}
	// Metodos para incluir un elementos particular en un arreglo
	
	public void setUnCliente(int posi, Cliente clientes){
		this.clientes.set(posi, clientes);
	}
	
	public void setUnDeposito(int posi, Deposito deposito){
		this.depositos.set(posi, deposito);
	}
	
	public void setUnPedido(int posi,Pedido pedido){
		this.pedidos.set(posi, pedido);
	}
	
	public void setUnaLinea(int posi,Linea linea){
		this.lineas.set(posi, linea);
	}
	
	public void setUnProveedor(int posi, Proveedor proveedor){
		this.proveedores.set(posi, proveedor);
	}
	
	public void setUnaFacturaCompra(int posi, FacturaCompra facturaCompra){
		this.facturasCompra.set(posi, facturaCompra);
	}
	public void setUnProducto(int posi, Producto producto){
		this.productos.set(posi, producto);
	}
	public void setUnDespacho(int posi, Despacho despacho) {
		this.despachos.set(posi, despacho);
	}
	
	// Metodos de busquedas para un elemento particular de los arreglos
	
	public int buscarCliente(String ced){
		
		for(int i =0;i<clientes.size();i++){
			
			if(getUnCliente(i).getId().equals(ced))
				return i;
		}
		return -1;
	}
	
	public int buscarDeposito(String codigo){

		for(int i =0;i<depositos.size();i++){
			
			if(getUnDeposito(i).getCodigo().equals(codigo))
				return i;
		}
		return -1;
	}
	
	public int buscarProducto (String codigo){
		for (int i = 0; i<productos.size();i++){
			if(getUnProducto(i).getCodigoProducto().equals(codigo))
				return i;
		}
		return -1;
	}
	
	public int buscarPedido(String codigo) {
		
		for(int i =0;i<pedidos.size();i++){
			
			if(getUnPedido(i).getCodigoPedido().equals(codigo))
				return i;
		}
		return -1;
	}
	
	public int buscarLinea(String codigo) {
		
		for(int i =0;i<lineas.size();i++){
			
			if(getUnaLinea(i).getCodigoLinea().equals(codigo))
				return i;
		}
		return -1;
	}
	
	public int buscarProveedor(String rif) {
		
		for(int i =0;i<proveedores.size();i++){
			
			if(getUnProveedor(i).getId().equals(rif))
				return i;
		}
		return -1;
	}
	
	public int buscarFacturaCompra(String codigo) {
		
		for(int i =0;i<facturasCompra.size();i++){
			
			if(getUnaFacturaCompra(i).getNumeroFactura().equals(codigo))
				return i;
		}
		return -1;
	}
	
	public int buscarDespacho(String codigo) {
		
		for (int i=0; i<despachos.size();i++){
			if (getUnDespacho(i).getNroDespacho().equals(codigo))
				return i;
		}
		return -1;
	}
	
}